/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.dew.serviciosmultiples.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import pe.edu.upc.dew.serviciosmultiples.exception.DAOException;
import pe.edu.upc.dew.serviciosmultiples.exception.LoginException;
import pe.edu.upc.dew.serviciosmultiples.model.Usuario;

/**
 *
 * @author bcano
 */
public class UsuarioDAOImpl extends BaseDAO implements UsuarioDAO {
    
    private DataSource dataSource;

    public DataSource getDataSource() {
        return dataSource;
    }

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    @Override
    public Usuario validarUsuario(Usuario usuario) throws DAOException, LoginException {
        String query = "select idUsuario, nombreUsuario, apellidoUsuario, usuName, correo, usuTipo "
                     + "from usuario where usuName=? and usuPassword=?";
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        Usuario vo = new Usuario();
        try {
            con = dataSource.getConnection();
            stmt = con.prepareStatement(query);
            stmt.setString(1, usuario.getUserName());
            stmt.setString(2, usuario.getUsuPassword());
            rs = stmt.executeQuery();

            if (rs.next()) {
                vo.setIdUsuario(rs.getInt("idUsuario"));
                vo.setNombreUsuario(rs.getString("nombreUsuario"));
                vo.setApellidoUsuario(rs.getString("apellidoUsuario"));
                vo.setCorreo(rs.getString("correo"));
                vo.setUsuTipo(rs.getString("usuTipo"));
                vo.setUserName(rs.getString("usuName"));
            } else {
                throw new LoginException("No existe");
            }
        } catch (LoginException e) {
            System.err.println(e.getMessage());
            throw e;
        } catch (SQLException e) {
            System.err.println(e.getMessage());
            throw new DAOException(e.getMessage());
        } finally {
            this.cerrarResultSet(rs);
            this.cerrarStatement(stmt);
            this.cerrarConexion(con);
        }
        return vo;
    }
}
